package classes_0905;

/**
 * 使用static修饰的方法称之为类方法/静态方法，和具体的对象无关
 * 只能直接使用类中的静态属性,以及静态方法
 * 不能在静态方法中直接使用this关键字
 * ？？？
 * static能否修饰类？
 *不能修饰外部类！创建一个类就是为了产生对象，而static与对象无关，矛盾的存在
 */
public class StaticTest {
    int m=0;
    //static修饰的内容统称为静态域（既有属性，也有方法）
    static int n=10;
    //主方法就是静态方法
    public static void main(String[] args) {
        System.out.println(n);
        //访问其他类的静态方法必须加类名访问，不然编译器只会在当前类中查找同名方法
        Test02.hello();
        //在同一个类中可以不加类名访问静态方法
        test();
        //不能直接在静态方法中访问，因为成员属性、成员方法必须通过对象来调用
//        System.out.println(m);
//        fun();
        StaticTest st=new StaticTest();
        System.out.println(st.m);
/**
 * 编译运行正确，输出10
 * 通过值为null的引用访问了成员属性或者成员变量才会空指针异常！！
 * 只有成员域才需要通过具体对象来访问
 */
        StaticTest staticTest=null;
        System.out.println(staticTest.n);//访问静态变量

    }

    //静态方法
    public static void test(){
        System.out.println("该类中的静态方法");
    }
    //成员方法
    public void fun(){
        System.out.println("该类中的成员方法");
    }
}
class Test02{
    public static void hello(){
        System.out.println("Test类中的静态方法");
    }
}